package com.blog.controller;

import com.blog.entity.Banner;
import com.blog.mapper.BannerMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.io.File;
import java.util.List;

/**
 * 处理客户端（浏览器端，手机端）的banner业务请求
 * @author 黄嘉强
 */
@RestController
public class BannerController {

    /**
     * 底层自动注入值
     */
    @Autowired
    private BannerMapper bannerMapper;

    /**
     * 处理客户端查询所有banner的请求
     * @GetMapping("") 用于定义请求的方式和path，此注解描述方法只用于get请求
     * @return
     */
    @GetMapping("/banner/list")
    public List<Banner> list() {
        return bannerMapper.list();
    }


    /**
     * 基于id查询某个banner的url
     * 访问：http://localhost:80/banner/select/id
     * @PathVariable 描述方法参数时，表示这个参数的值来自请求的url
     * @param id
     * @return
     */
    @GetMapping("/banner/select/{id}")
    public String selectUrlById(@PathVariable("id") Integer id) {
        return bannerMapper.selectUrlById(id);
    }

    /**
     * 向banner表中插入数据
     * 访问：
     * post http://localhost:80/banner/insert
     * Content-Type: Application/json
     *
     * {
     *     "id": null,
     *     "url": xxxxxxx.xxx
     * }
     * @RequestBody 注解后的参数会从请求体中读取数据
     * @param banner
     */
    @PostMapping("/banner/insert")
    public void insert(@RequestBody Banner banner){
        System.out.println(banner);
        bannerMapper.insert(banner);
    }

    /**
     * 基于id删除磁盘中的文件和数据库中的数据
     * @param id
     */
    @DeleteMapping("/banner/delete/{id}")
    public void delete(@PathVariable("id") Integer id){
        // 1.基于id查找对应的资源
        String imageUrl = bannerMapper.selectUrlById(id);
        // 2.删除磁盘中的文件
        new File("D:/轻工学院/大三下/19级实训/项目/hello_Spring/file", imageUrl).delete();
        // 3.删除数据库中的数据
        bannerMapper.deleteById(id);
    }
}
